<template>
  <div>
    <p>
      {{ doubled }}
    </p>
  </div>
</template>

<script setup lang="ts">
import { ref, computed, watch, watchEffect, effectScope } from "vue"

const counter = ref(1)
const doubled = computed(() => counter.value * 2)

// 使用 `effectScope` API 使这些Effect效果在触发一次后停止

const scope = effectScope()
scope.run(() => {
  const stop1 = watch(doubled, () => console.log(doubled.value))
  const stop2 = watchEffect(() => console.log("Count: ", doubled.value))
  stop1()
  stop2()
})

counter.value = 2

setTimeout(() => {
  counter.value = 4
})

</script>